import { getOverview, getSalesStats, getProductStats, getOrderStats, getUserStats } from '@/api/dashboard'

const state = {
  overview: {
    totalSales: 0,
    totalOrders: 0,
    totalUsers: 0,
    totalProducts: 0
  },
  salesStats: [],
  productStats: [],
  orderStats: [],
  userStats: []
}

const mutations = {
  SET_OVERVIEW(state, data) {
    state.overview = data
  },
  SET_SALES_STATS(state, data) {
    state.salesStats = data
  },
  SET_PRODUCT_STATS(state, data) {
    state.productStats = data
  },
  SET_ORDER_STATS(state, data) {
    state.orderStats = data
  },
  SET_USER_STATS(state, data) {
    state.userStats = data
  }
}

const actions = {
  // 获取仪表盘概览数据
  async getOverview({ commit }) {
    try {
      const res = await getOverview()
      if (res.code === 200) {
        commit('SET_OVERVIEW', res.data)
        return res.data
      }
      throw new Error(res.message || '获取仪表盘概览数据失败')
    } catch (error) {
      console.error('获取仪表盘概览数据失败:', error)
      throw error
    }
  },

  // 获取销售统计数据
  async getSalesStats({ commit }, params) {
    try {
      const res = await getSalesStats(params)
      if (res.code === 200) {
        commit('SET_SALES_STATS', res.data)
        return res.data
      }
      throw new Error(res.message || '获取销售统计数据失败')
    } catch (error) {
      console.error('获取销售统计数据失败:', error)
      throw error
    }
  },

  // 获取商品统计数据
  async getProductStats({ commit }) {
    try {
      const res = await getProductStats()
      if (res.code === 200) {
        commit('SET_PRODUCT_STATS', res.data)
        return res.data
      }
      throw new Error(res.message || '获取商品统计数据失败')
    } catch (error) {
      console.error('获取商品统计数据失败:', error)
      throw error
    }
  },

  // 获取订单统计数据
  async getOrderStats({ commit }) {
    try {
      const res = await getOrderStats()
      if (res.code === 200) {
        commit('SET_ORDER_STATS', res.data)
        return res.data
      }
      throw new Error(res.message || '获取订单统计数据失败')
    } catch (error) {
      console.error('获取订单统计数据失败:', error)
      throw error
    }
  },

  // 获取用户统计数据
  async getUserStats({ commit }) {
    try {
      const res = await getUserStats()
      if (res.code === 200) {
        commit('SET_USER_STATS', res.data)
        return res.data
      }
      throw new Error(res.message || '获取用户统计数据失败')
    } catch (error) {
      console.error('获取用户统计数据失败:', error)
      throw error
    }
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
} 